/**
 * ajax 请求函数模块
 * 返回值： promise 对象（异步返回的数据是：response.data）
 */

import axios from 'axios'
export default function ajax(url, data={}, type='GET') {
  return new Promise(function (resolve, reject) {
    // 执行异步 ajax 请求
    let promise
    if (type === 'GET') {
      // 准备 url query 参数数据
      let dataStr = '' // 将 data 数据拼接进 url 中
      Object.keys(data).forEach(key => {
        dataStr += key + '=' + data[key] + '&'
      })
      if (dataStr !== '') {
        dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'))
        url = url + '?' + dataStr
      }
      // 发送 get 请求
      promise = axios.get(url)
    } else {
      // 发送 post 请求
      promise = axios.post(url, data)
    }
    // 成功 - 调用 resolve()
    // 失败 - 调用 reject()
    promise
      .then(function (response) {
        resolve(response.data) // 得到想要的数据，简化外部的调用
      })
      .catch(function (error) {
        reject(error)
      })
  })
}

/*
// 不封装 Promise 的调用
const response = await ajax()
const result = response.data
// 封装 Promise 的调用（简单）
const result = await ajax()
*/
